home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_52 / sample20.asc < prev    next >
Text File  |  1995-01-01  |  10KB  |  260 lines

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;;              Cakewalk ASCII File Format -- Example File             ;;;
  3. ;;;                                                                     ;;;
  4. ;;;                         Cakewalk Release 2.0                        ;;;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. ; A semi-colon (;) tells the Asc2Cake interpreter to ignore the rest of
  8. ; the line.  You may use this feature for comments, as we are here.
  9.  
  10. ;;; The ASCII file format for Release 2.0 corresponds quite closely to
  11. ;;; the structure of the native, binary file format.
  12. ;;;
  13. ;;; The ASCII file is made up of several types of sections.  We'll call
  14. ;;; these sections "typed records".  Each typed record begins with a
  15. ;;; a label that defines what type of record it is.  A label is of the
  16. ;;; form [LABEL], where the brackets indicate a label and the text between
  17. ;;; them is the record type.  Any line beginning with an opening bracket [
  18. ;;; indicates the start of a new record.
  19. ;;;
  20. ;;; These are the various types:
  21. ;;;
  22. ;;;  [VARS]    -- Miscellaneous Cakewalk global variables.
  23. ;;;  [TRACK]    -- Parameters for a single track (as in Track View).
  24. ;;;  [STREAM]    -- Events for a single track.
  25. ;;;  [METERMAP]    -- The meter map.
  26. ;;;  [TEMPOMAP]    -- The tempo map.
  27. ;;;  [SYSX]    -- A System Exclusive bank.
  28. ;;;  [END]    -- End of file marker.
  29. ;;;
  30. ;;; More than record of type TRACK, STREAM, or SYSX may be in a file.
  31. ;;; For instance, there will be a TRACK record for each non-empty track in
  32. ;;; the work file.
  33. ;;;
  34. ;;; There may be only one record each of type VARS, METERMAP, and TEMPOMAP.
  35. ;;;
  36. ;;; The records do not have to be in any particular order, and your reading
  37. ;;; programs should not expect them to be.
  38. ;;;
  39. ;;; Your reading program should expect to find and ignore record types that
  40. ;;; it does not recognize.  E.g., if your reader encounters "[FUTURE]", it
  41. ;;; should ignore the record by scanning for the next line that begins with
  42. ;;; an opening bracket.
  43. ;;;
  44. ;;; All of the records are optional, except the [END] marker record.
  45. ;;; The simplest possible file is one line consisting of "[END]".
  46. ;;;
  47. ;;; Upper- and lower-case IS significant -- for example in variable names
  48. ;;; and section labels.  "RewindTime" is not the same as "Rewindtime".
  49. ;;;
  50. ;;; NOTE: The native .WRK file format has some other record types to hold
  51. ;;; other information, including the comments text, the region memory
  52. ;;; registers, the track offsets, and others.  Presently there are no
  53. ;;; ASCII typed records corresponding to these.  If you think some would
  54. ;;; be useful, let us know, and we'll try to incorporate them in the
  55. ;;; next revision.
  56. ;;; 
  57.  
  58. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  59. ;;; This is the VARS section.  You can set Cakewalk variables
  60. ;;; here.
  61. ;;;
  62. ;;; Any variables you omit will be assigned default values, which
  63. ;;; are the same as the defaults Cakewalk itself uses.  For instance,
  64. ;;; if you omit the Keysig variable, 0 (C) will be used, which is the
  65. ;;; default key signature in Cakewalk.
  66. ;;;
  67. ;;; All the recognized variables are listed below.  The data type of the
  68. ;;; variable is listed in parentheses in the comments.  The types are:
  69. ;;;
  70. ;;;   BYTE  - 8 bits, 0..256 or -127..+127
  71. ;;;   WORD  - 16 bits, 0..65535 or -32767..+32767
  72. ;;;   DWORD - 32 bits, 0..4 billion or -2 billion..+2 billion
  73. ;;;   BOOL  - 8 bits boolean, where 1=TRUE or 0=FALSE
  74. ;;;
  75. ;;; Whether the value is treated as signed or unsigned depends on the
  76. ;;; variable.
  77. ;;;
  78. ;;; Many languages do not support DWORD data types.  Your best bet in
  79. ;;; this case may be to treat DWORD's as floating-point variables, which
  80. ;;; can handle the DWORD value range (albeit often with a loss of
  81. ;;; accuracy due to round-off errors in calculations involving them).
  82.  
  83. [VARS]
  84. Now=0            ; (DWORD) Now marker time
  85. From=0            ; (DWORD) From marker time
  86. Thru=11930        ; (DWORD) Thru marker time
  87. KeySig=0        ; (BYTE) Key signature (0=C, 1=C#, ... 11=B)
  88. Clock=0            ; (BYTE) Clock Source (0=Internal, 1=MIDI, 2=FSK)
  89. AutoSave=0        ; (BYTE) Autosave (0=disabled, 1..256=minutes)
  90. PlayDelay=0        ; (BYTE) PlayDelay
  91. ZeroCtrls=0        ; (BOOL) Zero continuous controllers?
  92. SendSPP=1        ; (BOOL) Send Song Position Pointer?
  93. SendCont=1        ; (BOOL) Send MIDI Continue?
  94. PatchSearch=0        ; (BOOL) Patch/controller search-back?
  95. AutoStop=0        ; (BOOL) Auto-stop?
  96. StopTime=4294967295    ; (DWORD) Auto-stop time
  97. AutoRewind=0        ; (BOOL) Auto-rewind?
  98. RewindTime=0        ; (DWORD) Auto-rewind time
  99. MetroPlay=0        ; (BOOL) Metronome on during playback?
  100. MetroRecord=1        ; (BOOL) Metronome on during recording?
  101. MetroAccent=0        ; (BOOL) Metronome accents primary beats?
  102. CountIn=1        ; (BYTE) Measures of count-in (0=no count-in)
  103. ThruOn=1        ; (BOOL) MIDI Thru enabled?
  104. AutoRestart=0        ; (BOOL) Auto-restart?
  105. CurTempoOfs=1        ; (BYTE) Which of the 3 tempo offsets is used: 0..2
  106. TempoOfs1=32        ; (BYTE) Fixed-point ratio value of offset 1
  107. TempoOfs2=64        ; (BYTE)   "     "     "     "   "    "    2
  108. TempoOfs3=128        ; (BYTE)   "     "     "     "   "    "    2
  109. ; NOTE: The offset ratios are expressed as a numerator in the expression
  110. ; n/64.  To get a ratio from this number, divide the number by 64.  To get
  111. ; this number from a ratio, multiply the ratio by 64.
  112. ; Examples:
  113. ;   32 ==>  32/64 = 0.5
  114. ;   63 ==>  63/64 = 0.9
  115. ;   64 ==>  64/64 = 1.0
  116. ;  128 ==> 128/64 = 2.0
  117. ;
  118. PunchEnabled=0        ; (BOOL) Auto-Punch enabled?
  119. PunchInTime=0        ; (DWORD) Punch-in time
  120. PunchOutTime=0        ; (DWORD) Punch-out time
  121. EndAllTime=0        ; (DWORD) Time of latest event (incl. all tracks)
  122.  
  123. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  124. ;;; The TRACK record contains information very similar to that found
  125. ;;; in the Track View.  Each line is like a line of the Track View.
  126. ;;;
  127. ;;; Each line is of the format:
  128. ;;;
  129. ;;;   <number> "<name1>" "<name2>" <status> <loop> <pitch transp.> \
  130. ;;;     <vel. transp.> <port> <channel> [*]
  131. ;;;
  132. ;;; <number> is the number of the track (since you can omit tracks)
  133. ;;; <name> is the name enclosed in a pair of double-quotes
  134. ;;; <name2> is the secondary name, same format as <name>.
  135. ;;; <status> is the active status 1="PLAY", 0="mute"
  136. ;;; <loop> is looping status 1=loop, 0=no
  137. ;;; <pitch transp.> is the pitch transposition (-127..127)
  138. ;;; <vel. transp.> is the velocity transposition (-127..127)
  139. ;;; <channel> is the forced MIDI channel, (1..16, or 0 for none forced)
  140. ;;; An asterisk (*) is appended if the track is sticky-selected.
  141. ;;;
  142. ;;; NOTE: Blank names must be denoted by a pair of quotes to mark the field.
  143.  
  144. [TRACK]
  145. 0 "Bass Line" "" 1 0 0 0 0 0 *
  146. [TRACK]
  147. 1 "Nugent solo" "" 1 0 0 0 0 0 *
  148.  
  149. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  150. ;;; The STREAM record contains a list of events, in temporal (time) order,
  151. ;;; for a single track.  The format of each line is similar to that of the
  152. ;;; Event View, but the data types are not as "abstracted":
  153. ;;;
  154. ;;; <chan.> <ticks> <kind> <data1> [[<data2>] <dur>]
  155. ;;;
  156. ;;; <kind> is a single letter is to denote the event type:
  157. ;;;   'N' -- Note
  158. ;;;   'K' -- Key (note) pressure/aftertouch
  159. ;;;   'M' -- Monophonic (channel) pressure/aftertouch
  160. ;;;   'C' -- Controller
  161. ;;;   'P' -- Patch/program change
  162. ;;;   'W' -- pitch Wheel position
  163. ;;;   'X' -- SysX meta-event
  164. ;;;
  165. ;;; <data1>, <data2>, and <dur> depend on what kind of event it is.
  166. ;;; In contrast to the Event View, these are all raw numbers.  For instance,
  167. ;;; MIDI key numbers are given for note events, rather than the converted
  168. ;;; pitch string format of the Event View.  The other notable exception
  169. ;;; is the pitch wheel event ('W'), whose two bytes are converted to a
  170. ;;; single signed number in the Event View.  In short, all data fields
  171. ;;; are given in raw numbers as defined in the MIDI spec.
  172. ;;;
  173. ;;; This section must begin with the [STREAM] label, followed by the track
  174. ;;; number, the number of events, then finally the events themselves.
  175. ;;;
  176. ;;; Note that MIDI key numbers, not pitch strings, are used.  Times are
  177. ;;; in absolute ticks, not measure:beat:tick break-downs.
  178.  
  179. [STREAM]
  180. ;;; The section starts off with two lines of general information:
  181. 0    ; track number
  182. 8    ; number of events that follow -- MUST be exact!
  183. ;
  184. ; Here is a C major scale, in quarter-notes (durations=120, and 120 ticks
  185. ; equals a quarter-note), on track 1, MIDI channel 1:
  186. ;
  187. 1 0 N 60 64 120
  188. 1 120 N 62 64 120
  189. 1 240 N 64 64 120
  190. 1 360 N 65 64 120
  191. 1 480 N 67 64 120
  192. 1 600 N 69 64 120
  193. 1 720 N 71 64 120
  194. 1 840 N 72 64 120
  195.  
  196. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  197. ;;; MeterMap
  198. ;;;
  199. ;;; There must be at least one meter change in the map -- for measure one.
  200. ;;; Each change is on its own line.  The format of the line is similar to
  201. ;;; that of the "View/Meter map" window:
  202. ;;;
  203. ;;;   <measure number> <beats per measure>/<beat value>
  204. ;;;
  205. [METERMAP]
  206. ;;; The section starts off with a line of general information:
  207. 3    ; number of meter changes -- MUST be exact!
  208. ;;; Changes themselves:
  209. 1 4/4    ; measures are numbered from 1..
  210. 10 7/8
  211. 20 4/4
  212.  
  213. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  214. ;;; TempoMap
  215. ;;;
  216. ;;; There must be at least one tempo change in the map -- for tick 0.  Each
  217. ;;; change is on its own line.  The format of the line is similar to that of
  218. ;;; the "View/Tempo map" window:
  219. ;;;
  220. ;;;   <time> <tempo>
  221. ;;;
  222. [TEMPOMAP]
  223. ;;; The section starts off with a line of general information:
  224. 3    ; number of tempo changes -- MUST be exact!
  225. ;;; Changes themselves:
  226. 0 100
  227. 480 120
  228. 960 100
  229.  
  230. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  231. ;;; SysX
  232. ;;;
  233. ;;; <bank number> "<name>" <auto> <length>\n
  234. ;;; <data byte>\n
  235. ;;;  ...
  236. ;;; <data byte>\n
  237. ;;;
  238. ;;; <bank number> is 0..63
  239. ;;; <auto> is 1=Yes or 0=No
  240. ;;; <length> is 0..65535, and includes the F0 and F7 bytes.  MUST be exact!
  241. ;;;
  242. ;;; The data bytes are one per line.
  243. ;;;
  244. [SYSX]
  245. 0 "Fake SysX message" 1 2
  246. 247
  247. 240
  248.  
  249. [SYSX]
  250. 10 "Another Fake SysX message" 0 2
  251. 247
  252. 240
  253.  
  254. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  255. ;;; End
  256. ;;;
  257. ;;; The following typed record must be included at the end of the file:
  258.  
  259. [END]
  260.